home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Creative Computers
/
Creative Computers CD-ROM, Volume 1 (Legendary Design Technologies, Inc.)(1994).iso
/
shareware
/
fractals
/
icefrac
/
icefrac.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-11-17
|
27KB
|
771 lines
/* IceFrac.c - Diffusion Limited Aggregation simulator */
/* Version 2.2 */
/* (c) 1989 by Lars R. Clausen */
/* PaletteReq (c) 1989 by Jonathan Potter */
#include <exec/types.h>
#include <graphics/gfxbase.h>
#include <graphics/view.h>
#include <intuition/intuition.h>
#include <libraries/iff.h>
#include <stdio.h>
#include <hardware/blit.h>
#include <hardware/dmabits.h>
#include <math.h>
#include <PaletteReq.h>
/*#define USEBLIT*/
void *OpenLibrary();
struct Window *OpenWindow();
struct Screen *OpenScreen();
struct IntuiMessage *GetMsg();
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
struct Library *IFFBase = NULL;
struct Window *w;
struct Screen *s;
long code=1,ColCount=250,ColJump=250,Planes=5;
int *BZero = (0xdff002L);
char ifffile[] = "FracPic001";
unsigned char MoveBits=224;
unsigned char TestBits=224;
int Die=1,XSize=320,YSize=255,A1MinX=2,A1MinY=252,A1MaxX=317,A1MaxY=252;
int EnterOnEdge=1,A2MinX=-1,A2MinY=127,A2MaxX=160,A2MaxY=127,MaxIt=100,Margin=2;
char UndoBuff[4],XSBuff[4]="320",YSBuff[4]="255",A1XMinBuff[4]="2",
A1YMinBuff[4]="252",A1XMaxBuff[4]="317",A1YMaxBuff[4]="252",A2XMinBuff[4]="-1",
A2YMinBuff[4]="127",A2XMaxBuff[4]="160",A2YMaxBuff[4]="127",MIBuff[4]="100",
MargBuff[4]="2",ColBuff[4]="250";
char HiRes=0,Lace=0,Pal=1,A2Off=1;
struct Gadget BigGad = { NULL,0,0,320,255,GADGHNONE,RELVERIFY|FOLLOWMOUSE|
GADGIMMEDIATE,BOOLGADGET,NULL,NULL,NULL,NULL,NULL,0,NULL};
struct NewScreen ns = {0,0,320,256,5,1,2,NULL,CUSTOMSCREEN,NULL,NULL,NULL,NULL};
struct NewWindow nw = {
0,1,320,255,-1,-1,GADGETUP|MOUSEMOVE|VANILLAKEY|GADGETDOWN,NOCAREREFRESH|ACTIVATE|BORDERLESS,
&BigGad,NULL,NULL, NULL,NULL,0,0,0,0,CUSTOMSCREEN};
short ColorMap[32] = { /* format 0x0RGB */
/* 0-7 */ 0x0000,0x0FFF,0x0DDF,0x0CCF,0x0AAF,0x099F,0x077F,0x066F ,
/* 8-15 */ 0x044F,0x046D,0x047B,0x0489,0x0496,0x04B4,0x04D2,0x04F0 ,
/* 16-23 */ 0x06F0,0x08F0,0x0BF0,0x0DF0,0x0FF0,0x0FD0,0x0FB0,0x0F90 ,
/* 24-31 */ 0x0F70,0x0F50,0x0F00,0x0F55,0x0F77,0x0F99,0x0FBB,0x0FDD };
SHORT GadPairs[6][10]={{-1,-1,49,-1,49,9,-1,9,-1,-1},{-2,-2,33,-2,33,9,-2,9,-2,-2},
{0,0,4,0,4,4,0,4,0,0},{-1,-1,25,-1,25,9,-1,9,-1,-1},{-1,-1,34,-1,34,9,-1,9,-1,-1},
{-1,-1,149,-1,149,9,-1,9,-1,-1}};
struct Border Gad6Bord={0,0,3,0,JAM2,5,(SHORT *)GadPairs[0],NULL};
struct Border Gad4Bord={0,0,3,0,JAM2,5,(SHORT *)GadPairs[1],NULL};
struct Border Gad4Bordb={0,0,3,0,JAM2,5,(SHORT *)GadPairs[4],NULL};
struct Border MiniBord={0,0,3,0,JAM2,5,(SHORT *)GadPairs[2],NULL};
struct Border Gad3Bord={0,0,3,0,JAM2,5,(SHORT *)GadPairs[3],NULL};
struct Border Gad13Bord={0,0,3,0,JAM2,5,(SHORT *)GadPairs[5],NULL};
struct IntuiText GadText[8]=
{{1,0,JAM1,1,1,NULL,(UBYTE *)"Regrow",NULL},
{1,0,JAM1,5,1,NULL,(UBYTE *)"Go On",NULL},
{1,0,JAM1,1,1,NULL,(UBYTE *)"Cancel",NULL},
{11,0,JAM1,1,1,NULL,(UBYTE *)"Die",NULL},
{11,0,JAM1,1,1,NULL,(UBYTE *)"Edge",NULL},
{1,0,JAM1,1,1,NULL,(UBYTE *)"Make",NULL},
{1,0,JAM1,1,1,NULL,(UBYTE *)"Make",NULL},
{1,0,JAM1,1,1,NULL,(UBYTE *)" Change Colors",NULL}};
struct StringInfo StrInfo[13]=
{{(UBYTE *)&XSBuff[0],(UBYTE *)&UndoBuff[0],0,4,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
{(UBYTE *)&YSBuff[0],(UBYTE *)&UndoBuff[0],0,4,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
{(UBYTE *)&A1XMinBuff[0],(UBYTE *)&UndoBuff[0],0,4,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
{(UBYTE *)&A1YMinBuff[0],(UBYTE *)&UndoBuff[0],0,4,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
{(UBYTE *)&A1XMaxBuff[0],(UBYTE *)&UndoBuff[0],0,4,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
{(UBYTE *)&A1YMaxBuff[0],(UBYTE *)&UndoBuff[0],0,4,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
{(UBYTE *)&A2XMinBuff[0],(UBYTE *)&UndoBuff[0],0,4,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
{(UBYTE *)&A2YMinBuff[0],(UBYTE *)&UndoBuff[0],0,4,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
{(UBYTE *)&A2XMaxBuff[0],(UBYTE *)&UndoBuff[0],0,4,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
{(UBYTE *)&A2YMaxBuff[0],(UBYTE *)&UndoBuff[0],0,4,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
{(UBYTE *)&MIBuff[0],(UBYTE *)&UndoBuff[0],0,4,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
{(UBYTE *)&MargBuff[0],(UBYTE *)&UndoBuff[0],0,4,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL},
{(UBYTE *)&ColBuff[0],(UBYTE *)&UndoBuff[0],0,4,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}};
struct Gadget DMReqGadget[37] =
{{NULL,5,152,49,9,GADGHCOMP,RELVERIFY|GADGIMMEDIATE|ENDGADGET|TOGGLESELECT,
BOOLGADGET,(APTR)&Gad6Bord,NULL,&GadText[0],0,0,0,0},
{&DMReqGadget[0],105,152,49,9,GADGHCOMP,RELVERIFY|GADGIMMEDIATE|ENDGADGET|TOGGLESELECT
,BOOLGADGET,(APTR)&Gad6Bord,NULL,&GadText[2],0,0,1,0},
{&DMReqGadget[1],68,21,25,9,GADGHCOMP|SELECTED,RELVERIFY|GADGIMMEDIATE|TOGGLESELECT
,BOOLGADGET,(APTR)&Gad3Bord,NULL,&GadText[3],0,0,2,0},
{&DMReqGadget[2],50,2,5,5,GADGHCOMP,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,3,0},
{&DMReqGadget[3],55,2,5,5,GADGHCOMP,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,4,0},
{&DMReqGadget[4],60,2,5,5,GADGHCOMP,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,5,0},
{&DMReqGadget[5],50,7,5,5,GADGHCOMP,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,6,0},
{&DMReqGadget[6],60,7,5,5,GADGHCOMP,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,7,0},
{&DMReqGadget[7],50,12,5,5,GADGHCOMP|SELECTED,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,8,0},
{&DMReqGadget[8],55,12,5,5,GADGHCOMP|SELECTED,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,9,0},
{&DMReqGadget[9],60,12,5,5,GADGHCOMP|SELECTED,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,10,0},
{&DMReqGadget[10],115,2,5,5,GADGHCOMP,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,11,0},
{&DMReqGadget[11],120,2,5,5,GADGHCOMP,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,12,0},
{&DMReqGadget[12],125,2,5,5,GADGHCOMP,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,13,0},
{&DMReqGadget[13],115,7,5,5,GADGHCOMP,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,14,0},
{&DMReqGadget[14],125,7,5,5,GADGHCOMP,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,15,0},
{&DMReqGadget[15],115,12,5,5,GADGHCOMP|SELECTED,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,16,0},
{&DMReqGadget[16],120,12,5,5,GADGHCOMP|SELECTED,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,17,0},
{&DMReqGadget[17],125,12,5,5,GADGHCOMP|SELECTED,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)&MiniBord,NULL,NULL,0,0,18,0},
{&DMReqGadget[18],45,43,32,10,GADGHCOMP,GADGIMMEDIATE,STRGADGET,(APTR)&Gad4Bord,
0,0,0,(APTR)&StrInfo[0],19,0},
{&DMReqGadget[19],121,43,32,10,GADGHCOMP,GADGIMMEDIATE,STRGADGET,(APTR)&Gad4Bord,
0,0,0,(APTR)&StrInfo[1],20,0},
{&DMReqGadget[20],7,76,32,10,GADGHCOMP,GADGIMMEDIATE,STRGADGET,(APTR)&Gad4Bord,
0,0,0,(APTR)&StrInfo[2],21,0},
{&DMReqGadget[21],45,76,32,10,GADGHCOMP,GADGIMMEDIATE,STRGADGET,(APTR)&Gad4Bord,
0,0,0,(APTR)&StrInfo[3],22,0},
{&DMReqGadget[22],83,76,32,10,GADGHCOMP,GADGIMMEDIATE,STRGADGET,(APTR)&Gad4Bord,
0,0,0,(APTR)&StrInfo[4],23,0},
{&DMReqGadget[23],121,76,32,10,GADGHCOMP,GADGIMMEDIATE,STRGADGET,(APTR)&Gad4Bord,
0,0,0,(APTR)&StrInfo[5],24,0},
{&DMReqGadget[24],7,98,32,10,GADGHCOMP,GADGIMMEDIATE,STRGADGET,(APTR)&Gad4Bord,
0,0,0,(APTR)&StrInfo[6],25,0},
{&DMReqGadget[25],45,98,32,10,GADGHCOMP,GADGIMMEDIATE,STRGADGET,(APTR)&Gad4Bord,
0,0,0,(APTR)&StrInfo[7],26,0},
{&DMReqGadget[26],83,98,32,10,GADGHCOMP,GADGIMMEDIATE,STRGADGET,(APTR)&Gad4Bord,
0,0,0,(APTR)&StrInfo[8],27,0},
{&DMReqGadget[27],121,98,32,10,GADGHCOMP,GADGIMMEDIATE,STRGADGET,(APTR)&Gad4Bord,
0,0,0,(APTR)&StrInfo[9],28,0},
{&DMReqGadget[28],83,109,32,10,GADGHCOMP,GADGIMMEDIATE,STRGADGET,(APTR)&Gad4Bord,
0,0,0,(APTR)&StrInfo[10],29,0},
{&DMReqGadget[29],83,120,32,10,GADGHCOMP,GADGIMMEDIATE,STRGADGET,(APTR)&Gad4Bord,
0,0,0,(APTR)&StrInfo[11],30,0},
{&DMReqGadget[30],82,130,34,9,GADGHCOMP|SELECTED,RELVERIFY|GADGIMMEDIATE|
TOGGLESELECT,BOOLGADGET,(APTR)